package com.naiterui.ehp.bs.patient.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import com.naiterui.ehp.bp.bo.subscribe.AdvisoryReminderBO;
import com.naiterui.ehp.bp.bo.subscribe.InquiryRemindBO;
import com.naiterui.ehp.bp.bo.subscribe.PrescriptionPayBO;
import com.naiterui.ehp.bp.bo.subscribe.ReceiptReminderBO;
import com.naiterui.ehp.bp.bo.subscribe.RefundNoticeBO;
import com.naiterui.ehp.bp.bo.subscribe.ServiceEvaluationBO;
import com.naiterui.ehp.bp.bo.subscribe.ShipNoticeBO;
import com.naiterui.ehp.bp.support.config.FeignConfiguration;

/**
 * 微信服务
 *
 * @author yangfuya
 * @version 1.0
 * @date 2021/5/25 13:05
 **/
@RequestMapping("weixin")
@FeignClient(name = "weixin", url = "${ehp.domain.weixin}", configuration = FeignConfiguration.class)
public interface WxFeignClient {

    /**
     * 发送问诊提醒订阅消息
     *
     * @param inquiryRemindBO 消息内容
     * @return 0成功. 其他失败
     */
    @PostMapping("inner/message/subscribe/send/inquiry/remind")
    Integer subscribeSendInquiryRemind(@RequestBody InquiryRemindBO inquiryRemindBO);

    /**
     * 发送退款通知订阅消息
     *
     * @param refundNoticeBO 消息内容
     * @return 0成功. 其他失败
     */
    @PostMapping("inner/message/subscribe/send/refund/notice")
    Integer subscribeSendRefundNotice(@RequestBody RefundNoticeBO refundNoticeBO);

    /**
     * 发送服务评价通知订阅消息
     *
     * @param serviceEvaluationBO 消息内容
     * @return 0成功. 其他失败
     */
    @PostMapping("inner/message/subscribe/send/service/evaluation")
    Integer subscribeSendServiceEvaluation(@RequestBody ServiceEvaluationBO serviceEvaluationBO);

    /**
     * 发送收货提醒通知订阅消息
     *
     * @param receiptReminderBO 消息内容
     * @return 0成功. 其他失败
     */
    @PostMapping("inner/message/subscribe/send/receipt/reminder")
    Integer subscribeSendReceiptReminder(@RequestBody ReceiptReminderBO receiptReminderBO);

    /**
     * 发送发货通知订阅消息
     *
     * @param shipNoticeBO 消息内容
     * @return 0成功. 其他失败
     */
    @PostMapping("inner/message/subscribe/send/ship/notice")
    Integer subscribeSendShipNotice(@RequestBody ShipNoticeBO shipNoticeBO);

    /**
     * 发送咨询用药提醒订阅消息
     * @param advisoryReminderBO 消息内容
     * @return 0成功。 其他失败
     */
    @PostMapping("inner/message/subscribe/send/advisory/reminder")
    Integer subscribeSendAdvisoryReminder(@RequestBody AdvisoryReminderBO advisoryReminderBO);

    /**
     * 发送处方支付提醒订阅消息
     *
     * @param prescriptionPayBO
     *            消息内容
     * @return 0成功。 其他失败
     */
    @PostMapping("inner/message/subscribe/send/prescription/pay")
    Integer subscribeSendPrescriptionPay(@RequestBody PrescriptionPayBO prescriptionPayBO);
}
